import heapq
def main():
n,k1,k2 = [int(i) for i in input().split()]
arr1 = [int(i) for i in input().split()]
arr2 = [int(i) for i in input().split()]
diff = []
for i in range(len(arr1)):
tempDiff = abs(arr1[i]-arr2[i])
diff.append(-tempDiff)
heapq.heapify(diff)
for i in range(k1+k2):
x = heapq.heappop(diff)
if abs(x)>0:
x = -(abs(x)-1)
else:
x = -1
heapq.heappush(diff,x)
minError = sum([x*x for x in diff])
print(minError)
if __name__ == "__main__":
main()
#include<bits/stdc++.h>
#include<cmath>
#include<set>
#include<vector>
#define ll long long int
using namespace std;
int main(){
ll n, k1, k2;
scanf("%lld %lld %lld",&n,&k1,&k2);
vector<long long int>st;
vector<ll>v,a(n),b(n);
ll k, item, temp, ans = 0;
k = k1+k2;
for(int i=0;i<n;i++){
scanf("%lld",&a[i]);
}
for(int i=0;i<n;i++){
scanf("%lld",&b[i]);
temp = abs(a[i]-b[i]);
v.push_back(temp);
}
sort(v.begin(),v.end());
while(k>0){
temp = v[v.size()-1];
v.pop_back();
temp -= 1;
v.push_back(abs(temp));
sort(v.begin(),v.end());
k--;
}
for(int i=v.size()-1;i>=0;i--){
temp = v[i];
ans += pow(temp,2);
v.pop_back();
}
printf("%lld",ans);
}
1516A - Tit for Tat | 622. Design Circular Queue |
814. Binary Tree Pruning | 791. Custom Sort String |
787. Cheapest Flights Within K Stops | 779. K-th Symbol in Grammar |
701. Insert into a Binary Search Tree | 429. N-ary Tree Level Order Traversal |
739. Daily Temperatures | 647. Palindromic Substrings |
583. Delete Operation for Two Strings | 518. Coin Change 2 |
516. Longest Palindromic Subsequence | 468. Validate IP Address |
450. Delete Node in a BST | 445. Add Two Numbers II |
442. Find All Duplicates in an Array | 437. Path Sum III |
436. Find Right Interval | 435. Non-overlapping Intervals |
406. Queue Reconstruction by Height | 380. Insert Delete GetRandom O(1) |
332. Reconstruct Itinerary | 368. Largest Divisible Subset |
377. Combination Sum IV | 322. Coin Change |
307. Range Sum Query - Mutable | 287. Find the Duplicate Number |
279. Perfect Squares | 275. H-Index II |